"""author: wenyao
   data: 2021/11/23
   project: cjh
"""

#遇到错误异常，程序就终止了
# print("start...")
# fp = open("test.txt")
# print("end...")

#常见异常
#NameError
# print(abc)

#ZeroDivisionError
# print(1/0)

#IndentationError   #缩进问题
 # print("abc")

#IndexError
# lst = [1,2,3]
# print(lst[5])

#SyntaxError
# if 1>0::
#    print("ok")

#KeyError
# a = {"s1":1}
# print(a.get("s2",0))
# print(a["s2"])

#AttributeError
# import random
# random.xxx()

#ValueError
# int("abc")

#AssertionError
#断言
# a = 3
# b = 4
# assert  a<b

#异常机制  异常捕获
#  try ... except
#异常发生，不终止程序。异常发生，做特殊处理

# try:
#     fp = open("test.txt")
# except:
#     print("no such test.txt")
# print("end....")

#except捕获错误与触发的错误不一致，程序就捕获不到，然后抛出异常
#except 可以有多个
#except 匹配到第一个就退出
#如果父类异常捕获放在最前面，就会吞噬后面所有的子类异常

try:
    a = 1/0
   # int("Abc")
except ValueError as e :
    print(e)
except ZeroDivisionError:
    print("除数为0")
except Exception:
    print("this is exception")


#else结构 finally结构

#else结构  没有任何异常发生的时候执行的
#finally  不管有没有异常，不管异常有没有被捕获,都执行
# try:
#     print("else test....")
#     1/0
# except ValueError:
#     print("error")
# else:
#     print("else test end...")
#
# finally:
#     print(" i am finally")

# def func1():
#     try:
#         print("else test....")
#         1 / 0
#     except:
#         print("error")
#         return 10
#     else:
#         print("else test end...")
#     finally:
#         print(" i am finally")
#
# result = func1()
# print(result)

#raise 关键字
#手动抛出异常
# raise
# raise 异常类
# raise 异常类(说明信息)

print("start raise....")
# raise
raise IndexError
raise IndexError("this is test")
print("end raise.....")

#1、输入数字n，输出n天前的日期（time或者datatime模块）
#2、输出指定文件夹下有哪些文件或文件夹（实现ls命令， os）
#3、列表去重，并且从小到大排序
#4、如何在一个函数内部修改全局变量
#5、如何跨模块共享全局变量
#   把全局变量都写在一个模块文件中，
#   使用的时候导入即可
#6、python的基本数据类型有哪些？
#   整数、浮点数、复数、字符串、布尔、NoneType、列表、元组、字典、集合
#7、python中生成随机整数（1-10），随机小数（1-10），随机小数（0-1）的方法
#
#8、python中哪些是可变数据类型，哪些是不可变数据类型
#9、a+=1与a=a+1有什么区别
#10、什么是pep8？说出5点它的标准
#11、给定一个字符串，找出字符串第一个重复的字符
#12、简述深拷贝与浅拷贝
#13、简述python内存机制
#14、使用python实现冒泡排序，快速排序
#15、验证一个字符串是否属于回文（从左到右，从右到左都是一样）

# import os
# import os.path
# def tree(path, depth=0):
#     if depth == 0:
#         print(path)
#     items = os.listdir(path)
#     for item in items:
#         # 输出文件夹中的文件和子文件夹名
#         print('|    '*depth, end='')
#         print('|----', item)
#         item = os.path.join(path, item)
#         if os.path.isdir(item):
#             # 递归遍历子目录
#             tree(item, depth+1)
#
# tree('C:\\Users\\Administrator\\Desktop\\文老师\\上课代码\\cjh\\learn_code')

#动态规划
#1、中间状态值需要保存
#2、想办法找到规律，当前的问题（n） 可不可以由上一个（n-1）或者是其他东西一起推导出来
#3、确定好初始状态
# def func(n):
#     dp = [0]*n
#     dp[0] = 1
#     dp[1] = 2
#     for i in range(2,n):
#         dp[i]=dp[i-1]+dp[i-2]
#     return dp[n-1]
# print(func(4))
